package com.dys.normalstudy.normal;


import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.dys.normalstudy.R;
import com.dys.normalstudy.bean.Account;
import com.dys.normalstudy.callback.MCallBack;

import java.util.Random;

public class NormalActivity extends AppCompatActivity implements View.OnClickListener{

    /**
     * 展示查询结果
     */
    private TextView mTvResult;

    /**
     * 用户输入信息的输入框
     */
    private EditText mEditAccount;


    /**
     * 界面创建时执行
     * @param savedInstanceState 不同组件之间传递数据
     */
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_normal);
        initView();
    }

    /**
     * 初始化View
     */
    private void initView() {
        mTvResult = findViewById(R.id.tv_result);
        mEditAccount = findViewById(R.id.et_account);
        findViewById(R.id.btn_getAccount).setOnClickListener(this);
    }

    /**
     * 点击获取账号数据信息
     * @param v 视图对象
     */
    @Override
    public void onClick(View v) {

        // 用户输入的账号
        String userInput =  getUserInfoByInput();
        // 根据账号获取数据
        getAccountData(userInput, new MCallBack() {
            @Override
            public void onSuccess(Account account) {
                showSuccessPage(account);
            }

            @Override
            public void onFailure() {
                showFailedPage();
            }
        });
    }

    /**
     * 根据输入框输入的内容获取用户信息
     * @return 获取到的用户信息
     */
    private String getUserInfoByInput(){
        return mEditAccount.getText().toString();
    }

    /**
     * 获取数据成功的界面
     * @param account 账号信息
     */
    @SuppressLint("SetTextI18n")
    private void showSuccessPage(Account account) {

        mTvResult.setText("用户账号："+account.getName() +"  |  "+ "用户等级："+ account.getLevel());
    }

    /**
     * 获取数据失败的界面
     */
    private void showFailedPage() {
        mTvResult.setText("获取数据失败!");
    }

    /**
     * 模拟获取用户数据
     * @param accountName 账号名称
     * @param mCallBack 通知用户查询结果
     */
    private void getAccountData(String accountName, MCallBack mCallBack) {

        // 随机数
        Random random=new Random();
        // 查询时，可能成功也可能失败，结果是随机的
        boolean isSuccess = random.nextBoolean();
        if(isSuccess) {
            Account account = new Account();
            account.setName(accountName);
            account.setLevel(100);
            mCallBack.onSuccess(account);
        }else {
            mCallBack.onFailure();
        }
    }
}
